package com.are.odisea;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.are.entidades.Encuestas;
import com.are.manejadores.ManejadorEncuesta;

/**
 * Servlet implementation class SrvEncuestas
 */
@WebServlet("/SrvEncuestas")
public class SrvEncuestas extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SrvEncuestas() {
        super();
        // TODO Auto-generated constructor stub
    }
    db conexion = null;
    ManejadorEncuesta manejador;
    
    protected void ProcesarPeticion(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
    	response.setContentType("text/html;charset=ISO-8859-1");
    	PrintWriter out = response.getWriter();

		String operacion = (String) request.getParameter("operacion");
		
	if(operacion.equals("add")){
			RegistrarEncuesta(request, out);
	}
	else if(operacion.equals("listMis")){
			ListarMis(request, out);
	}
	else if(operacion.equals("listTer")){
			ListarTer(request, out);
	}
	else if(operacion.equals("listTerIni")){
		ListarTerIni(request, out);
	}
	else if(operacion.equals("listTerI")){
		ListarTerI(request, out);
	}
	out.close();
    }
    
    private void ListarTerIni(HttpServletRequest request,PrintWriter out){
    	HttpSession sesion=request.getSession();
		String usuario = (String)sesion.getAttribute("id_usuario");
		try {
			conexion = new db();
			manejador = new ManejadorEncuesta(conexion);
			ArrayList<Encuestas> enc = manejador.listTer(usuario,"");
				out.print("<h3 class=\"ui-widget-header ui-corner-all\" style=\"text-align:center;\">Encuestas</h3>");
				int i=0;
				for (Encuestas e : enc)
				{
					if(i!=0){
						out.println("<br/>");
					}
					out.print("<a href=\"tramEncuesta.jsp?id_enc="+ e.getId()+ "\" style=\"color: #000080; font-weight: bold;\">"+e.getTitulo()+"</a>");
					out.println("<br/>");
					String resumen="";
					if(e.getDescripcion().length()>100){
						 resumen=e.getDescripcion().substring(0, 100);
					}else{
						 resumen=e.getDescripcion();
					}
					out.println("<td>" + resumen +"..."+"</td>");
					i++;
				} 
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			out.print(e.getMessage());
		} finally {
			if (conexion != null) {
				try {
					conexion.Close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					out.print(e.getMessage());
				}
			}
		}
    }
    
    private void ListarTer(HttpServletRequest request,PrintWriter out){
    	HttpSession sesion=request.getSession();
		String usuario = (String)sesion.getAttribute("id_usuario");
		String filtro= (String) request.getParameter("filtro");
		try {
			conexion = new db();
			manejador = new ManejadorEncuesta(conexion);
			ArrayList<Encuestas> enc = manejador.listTer(usuario,filtro);

				//out.println("<h2>Listado de Noticias</h2>");
				out.println("<table>");	
				out.println("<thead>");
				out.println("<tr>");
				out.println("<th>Titulo</th>");
				out.println("<th>Descripcion</th>");
				out.println("<th></th>");
				out.println("</tr>");
				out.println("</thead>");
				out.println("<tbody>");
				int fila=1;
				for (Encuestas e : enc)
				{
					out.println("<tr " + (fila%2==0?"class='odd'":"") + ">");
					out.println("<td>" + e.getTitulo() + "</td>");
					String resumen="";
					if(e.getDescripcion().length()>100){
						 resumen=e.getDescripcion().substring(0, 100);
					}else{
						 resumen=e.getDescripcion();
					}
					out.println("<td>" + resumen+"..." + "</td>");
					out.println("<td>");
					out.print("<a href=\"../tramEncuesta.jsp?id_enc="
							+ e.getId()
							+ "\">Responder Encuesta</a>");
					out.println("</td>");
					out.println("</tr>");
					fila++;
				} 
				out.println("<tr>");
				out.println("</tr>");
				out.println("<tbody>");
				out.println("<tfoot>");
				out.println("<th colspan='3'>Total Encuestas: " + enc.size() +"</th>");
				out.println("</tfoot>");
				out.println("</table>");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			out.print(e.getMessage());
		} finally {
			if (conexion != null) {
				try {
					conexion.Close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					out.print(e.getMessage());
				}
			}
		}
	}
    private void ListarTerI(HttpServletRequest request,PrintWriter out){
    	HttpSession sesion=request.getSession();
		String usuario = (String)sesion.getAttribute("id_usuario");
		String filtro= (String) request.getParameter("filtro");
		try {
			conexion = new db();
			manejador = new ManejadorEncuesta(conexion);
			ArrayList<Encuestas> enc = manejador.listTer(usuario,filtro);
			if (enc.size() > 0) {
				out.println("<h2>Listado de Encuestas</h2>");
				out.println("<table>");	
				out.println("<thead>");
				out.println("<tr>");
				out.println("<th>Titulo</th>");
				out.println("<th>Descripcion</th>");
				out.println("<th></th>");
				out.println("</tr>");
				out.println("</thead>");
				out.println("<tbody>");
				int fila=1;
				for (Encuestas e : enc)
				{
					out.println("<tr " + (fila%2==0?"class='odd'":"") + ">");
					out.println("<td>" + e.getTitulo() + "</td>");
					String resumen="";
					if(e.getDescripcion().length()>100){
						 resumen=e.getDescripcion().substring(0, 100);
					}else{
						 resumen=e.getDescripcion();
					}
					out.println("<td>" + resumen+"..." + "</td>");
					out.println("<td>");
					out.print("<a href=\"tramEncuesta.jsp?id_enc="
							+ e.getId()
							+ "\">Responder Encuesta</a>");
					out.println("</td>");
					out.println("</tr>");
					fila++;
				} 
				out.println("<tr>");
				out.println("</tr>");
				out.println("<tbody>");
				out.println("<tfoot>");
				out.println("<th colspan='3'>Total Encuestas: " + enc.size() +"</th>");
				out.println("</tfoot>");
				out.println("</table>");
			}else {
				out.println("No hay encuestas disponibles en este momento.");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			out.print(e.getMessage());
		} finally {
			if (conexion != null) {
				try {
					conexion.Close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					out.print(e.getMessage());
				}
			}
		}
	}
	private void ListarMis(HttpServletRequest request,PrintWriter out){
		HttpSession sesion=request.getSession();
		String filtro = (String)request.getParameter("filtro");
		try {
			conexion = new db();
			manejador = new ManejadorEncuesta(conexion);
			ArrayList<Encuestas> enc = manejador.listMis(filtro);
			if (enc.size() > 0) {
				out.println("<h2>Listado de Encuestas</h2>");
				out.println("<table>");	
				out.println("<thead>");
				out.println("<tr>");
				out.println("<th>Titulo</th>");
				out.println("<th>Descripcion</th>");
				out.println("<th></th>");
				out.println("</tr>");
				out.println("</thead>");
				out.println("<tbody>");
				int fila=1;
				for (Encuestas e : enc)
				{
					out.println("<tr " + (fila%2==0?"class='odd'":"") + ">");
					out.println("<td>" + e.getTitulo() + "</td>");
					String resumen="";
					if(e.getDescripcion().length()>100){
						 resumen=e.getDescripcion().substring(0, 100)+"..." ;
					}else{
						 resumen=e.getDescripcion();
					}
					out.println("<td>" + resumen+ "</td>");
					out.println("<td>");
					out.print("<a href=\"Mod_Encuesta.jsp?id_enc="
							+ e.getId()
							+ "\">Modificar</a>     <a href=\"javascript:remove('" 
							+ e.getId() 
							+ "')\">Eliminar</a> <a href=\"PermisosEnc.jsp?id_enc="
							+ e.getId()
							+ "\">Asignar Permisos</a> <a href=\"PreguntasEnc.jsp?id_enc="
							+ e.getId()
							+ "\">Registrar Preguntas</a> <a href=\"EstadisticasEnc.jsp?id_enc="
							+ e.getId()
							+ "\">Ver Resultados</a>");
					out.println("</td>");
					out.println("</tr>");
					fila++;
				} 
				out.println("<tr>");
				out.println("</tr>");
				out.println("<tbody>");
				out.println("<tfoot>");
				out.println("<th colspan='3'>Total Encuestas: " + enc.size() +"</th>");
				out.println("</tfoot>");
				out.println("</table>");
			}else {
				out.println("<strong>No hay encuestas disponibles en este momento</strong>");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			out.print(e.getMessage());
		} finally {
			if (conexion != null) {
				try {
					conexion.Close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					out.print(e.getMessage());
				}
			}
		}
	}
	private void RegistrarEncuesta(HttpServletRequest request,PrintWriter out){
		try {
			HttpSession sesion=request.getSession();
			conexion = new db();
			Encuestas enc = new Encuestas();
			enc.setTitulo((String) request.getParameter("titulo"));
			enc.setDescripcion((String) request.getParameter("descripcion"));
			enc.setUsuario((String)sesion.getAttribute("id_usuario"));
			manejador=new ManejadorEncuesta(conexion);
			manejador.setEnc(enc);
			if (manejador.add()) {
				out.print("OK");
			}else {
				out.print("Error al procesar la solicitud");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if (conexion != null) {
				try {
					conexion.Close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					out.print(e.getMessage());
				}//fin del cath
			}//fin del if dentro de
		}
		
	}
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		 ProcesarPeticion(request,response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		ProcesarPeticion(request,response);
	}

}
